Arduino Uno RCWL-0516: Industrial Microwave Motion Controller
Professional RCWL-0516 Doppler radar module transmits 3.18GHz continuous wave detecting micro-Doppler motion signatures 5-12m radius through non-metallic barriers. Unlike PIR thermal sensors, microwave penetrates plastic, glass, thin walls with 360° conical pattern and PET immunity.
Pin 2 interrupt captures <100ms response HIGH output with 0.5-25m range adjustable via onboard pots. 2.8mA active, 40μA standby, 3.3-5V tolerant operation supports battery-powered deployments.
How It Works
A microwave motion sensor such as the RCWL-0516 works on the Doppler effect. It transmits a continuous low-power microwave signal around 3.2 GHz and listens for the reflection. A stationary object returns the same frequency; a moving one returns a slightly shifted frequency, and the module detects that shift.
This is an active sensor, in contrast to the passive PIR. It emits energy rather than merely receiving it, which brings two practical advantages: it detects movement regardless of temperature — so it sees a moving object that is the same temperature as the room — and it penetrates thin non-metallic materials such as plastic, drywall and glass.
That penetration is also the main difficulty. A microwave sensor mounted inside an enclosure happily detects people walking on the other side of a wall, which produces baffling false triggers. Range is typically 5–7 m and is not easily reduced.
The RCWL-0516 outputs a straightforward digital HIGH while triggered, with a default hold time of around two seconds that can be changed with an onboard component.
Components Needed
- Arduino Uno
- RCWL-0516 Microwave RADAR Module
- Male-to-male jumper wires (3 pieces)
- Arduino Uno
- 220Ω LED + 100Ω buzzer driver
- External 5V power (optional)
Wiring to the Arduino Uno
Connect OUT to D2, VIN to 5 V and GND to ground. The module accepts a wide supply range and its output is 3.3 V logic, so it interfaces with both 3.3 V and 5 V boards safely.
Keep metal away from the antenna side of the board. The PCB trace antenna is detuned by nearby metal, which reduces range unpredictably — mount it with clear space on the component side.
Expect to iterate on placement. Because the signal passes through walls, the first mounting position is rarely the right one. Test with the intended enclosure in place rather than on an open bench.
| Module pin | Arduino Uno pin | Function |
|---|---|---|
| OUT | D2 | HIGH while motion is detected |
| VIN | 5V | Supply (4–28 V) |
| GND | GND | Common ground |
| 3V3 | — | Regulated output, can power a small load |
Example Code
Radar motion detection requiring sustained triggering to suppress false positives. Upload it with the board set to Arduino Uno and open the Serial Monitor at 9600 baud.
const int RADAR_PIN = 2;
const int CONFIRM_SAMPLES = 3; // consecutive reads before believing it
int hits = 0;
bool detected = false;
void setup() {
Serial.begin(9600);
pinMode(RADAR_PIN, INPUT);
Serial.println("Microwave radar ready");
}
void loop() {
bool raw = (digitalRead(RADAR_PIN) == HIGH);
hits = raw ? min(hits + 1, CONFIRM_SAMPLES) : 0;
bool confirmed = (hits >= CONFIRM_SAMPLES);
if (confirmed != detected) {
detected = confirmed;
Serial.println(detected ? "MOVEMENT (confirmed)" : "clear");
}
delay(100);
}
Applications
A microwave radar motion sensor turns up in a wide range of projects. These are the uses where it is the right choice rather than a compromise:
- Lighting control where a PIR would be defeated by a glass door
- Detection through enclosures, so the sensor can be hidden entirely
- Occupancy sensing in environments at body temperature, where PIR fails
- Outdoor detection unaffected by sun and wind
- Pairing with a PIR so two different technologies must agree before an alarm
Working with the Arduino Uno
The Arduino Uno is built around the ATmega328P and runs on 5 V logic with 2 KB of SRAM and 32 KB of program flash. These details change how this circuit is wired and what the sketch can do, so they are worth stating plainly before you build.
The Uno runs at 5 V, so most hobby sensor modules connect directly with no level shifting.
With only 2 KB of SRAM, avoid large buffers and prefer the F() macro for constant strings.
The single hardware UART is shared with the USB connection, so heavy Serial printing competes with uploads.
| Arduino Uno characteristic | Value | Why it matters here |
|---|---|---|
| Logic voltage | 5 V | Matches most hobby modules directly |
| ADC resolution | 10-bit (0–1023) | Sets how finely an analog reading can be resolved |
| Analog inputs | A0–A5 (six channels) | Determines how many analog sensors can share the board |
| PWM outputs | D3, D5, D6, D9, D10 and D11 | Needed for brightness, speed and tone control |
| I²C pins | A4 (SDA) and A5 (SCL) | Fixed by hardware — wiring copied from another board may not match |
| Interrupt pins | D2 and D3 only | Required for counting fast or asynchronous events |
| Serial | a single hardware UART shared with USB | Monitor runs at 9600 baud by default |
Troubleshooting
Most problems with this module fall into a handful of categories. Work through these before suspecting the part itself:
- It triggers when nobody is in the room — it is seeing through a wall. Reposition, or shield the back with metal foil.
- Range cannot be reduced enough for a small space — microwave sensors are poorly suited to confined areas. A PIR is the better choice there.
- Output is erratic near the board — the microcontroller's own clock and switching supply interfere. Separate them by several centimetres.
- It never triggers — metal is too close to the antenna, or the supply is below 4 V.
- Moving fans or curtains cause triggers — any motion counts; this sensor cannot distinguish a person from a moving object.
- Code written for an ESP board gives odd analog values — the Arduino Uno uses a 10-bit ADC returning 0–1023; rescale any constant taken from a 12-bit example.
- An I²C sensor is not found after copying wiring from another Arduino — on the Arduino Uno I²C is on A4 (SDA) and A5 (SCL).
Taking It Further on the Arduino Uno
Once the basic reading works, where you go next depends very much on which board you are using. These are the directions that suit the Arduino Uno specifically:
The Uno’s shield ecosystem is its real advantage. Once the circuit works on a breadboard, a prototyping shield turns it into something permanent that still stacks with a data-logging or Ethernet shield without rewiring.
Logging to an SD card via a shield is the natural next step, since the Uno has no onboard storage and no network. Timestamp each reading with a DS3231 real-time clock so the log survives power cuts with correct times.
Because SRAM is limited to 2 KB, keep logged strings short and write them out immediately rather than buffering. Building a long String in memory is the most common cause of an Uno sketch that runs for hours and then freezes.
Notes and Practical Limits
Microwave and PIR fail in opposite ways: PIR needs a temperature difference and line of sight, microwave needs motion but ignores both. Combining them with an AND condition produces far fewer false alarms than either alone.
These modules emit RF continuously. Output power is very low and well within consumer limits, but several units in one room can interfere with each other — space them apart or enable them in turn.